1 O que são LLMs?
Modelos gigantes treinados em trilhões de tokens — e por que eles impressionam tanto.
Por que "Large"?
A escala é o que torna LLMs especiais. Modelos modernos têm:
Bilhões de parâmetros
GPT-3: 175B, Llama 3: 70B, Claude 3: ~200B (estimado). Mais parâmetros = mais capacidade de aprender padrões complexos.
Trilhões de tokens
Treinados em terabytes de texto: Wikipedia, livros, web, código. GPT-3: ~300B tokens. Llama 2: 2T tokens.
Compute massivo
Treinamento custa milhões de dólares em GPUs (A100, H100). GPT-4 provavelmente custou >$100M para treinar.
O que LLMs fazem bem (e mal)
✅ Pontos fortes
• Geram texto coerente e fluente
• Respondem perguntas sobre conhecimento geral
• Traduzem, resumem, reescrevem
• Escrevem código, e-mails, artigos
• Seguem instruções complexas
❌ Limitações
• Não sabem o que aconteceu depois do treinamento
• Alucinam (inventam informações)
• Não entendem de verdade (só padrões)
• Viés dos dados de treinamento
• Context window limitado
2 Pré-treinamento — aprendendo a linguagem
A fase onde o modelo "lê" a internet inteira e aprende padrões de linguagem.
Next Token Prediction
# Objetivo do pré-treinamento # Dado: "O gato dormiu no" # Prever: "sofá" (probabilidade 0.72) # O modelo vê: tokens = ["O", "gato", "dormiu", "no"] # E prevê distribuição de probabilidades: probs = { "sofá": 0.72, "chão": 0.15, "telhado": 0.08, "colo": 0.03, "outro": 0.02 } # Loss function: cross-entropy # Penaliza o modelo se o token correto tinha baixa probabilidade
🎮 Simulador: Next Token Prediction
Veja como o modelo prevê o próximo token
Interpretação: o modelo calcula probabilidades para todos os tokens do vocabulário. Os mais prováveis são mostrados. Clique em uma predição para "escolhê-la" e ver a próxima predição.
Dados de treinamento
| Modelo | Tokens de treino | Fontes | Ano |
|---|---|---|---|
| GPT-3 | ~300B | Web, livros, Wikipedia | 2020 |
| Llama 2 | 2T | Web, código, livros | 2023 |
| Claude 3 | ~5T (estimado) | Web, livros, código | 2024 |
| GPT-4 | ~13T (estimado) | Web, livros, código, multilíngue | 2023 |
O que o modelo aprende?
Gramática e sintaxe
Estrutura das frases, concordância, pontuação.
Conhecimento factual
Datas, nomes, eventos históricos, conceitos científicos.
Programação
Sintaxe de linguagens, padrões de código, APIs.
Raciocínio básico
Lógica, matemática simples, analogias.
3 Fine-tuning — adaptando ao seu domínio
Pós-treinamento supervisionado para tarefas específicas.
Tipos de fine-tuning
Supervised Fine-Tuning (SFT)
Treina com pares (input, output) ideais. Ex: perguntas de clientes + respostas perfeitas de especialistas.
LoRA / QLoRA
Fine-tuning eficiente: congela a maior parte do modelo e ajusta apenas pequenas matrizes. 10x mais barato.
Domain-specific
Adapta para domínios específicos: médico, jurídico, técnico. Usa dados do domínio para fine-tuning.
Exemplo: fine-tuning para suporte da Nimbus Cloud
# Dataset de fine-tuning training_data = [ { "input": "Qual o timeout do endpoint /v2/sync?", "output": "O timeout padrão do endpoint /v2/sync é 30 segundos. Para arquivos maiores que 500MB, recomendamos aumentar a variável NIMBUS_TIMEOUT para 120 segundos." }, { "input": "Como aumentar o timeout?", "output": "Para aumentar o timeout, edite o arquivo de configuração config.yaml e adicione: NIMBUS_TIMEOUT: 120. Reinicie o serviço após a alteração." }, # ... milhares de exemplos ] # Fine-tuning com Hugging Face from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8b") tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3-8b") # Configura treinamento trainer = Trainer( model=model, train_dataset=training_data, args=TrainingArguments( output_dir="./nimbus-support-model", num_train_epochs=3, per_device_train_batch_size=4, learning_rate=2e-5 ) ) # Treina trainer.train() # Salva modelo fine-tuned model.save_pretrained("./nimbus-support-model")
Quando usar fine-tuning vs RAG?
🎯 Fine-tuning
Use quando:
- Precisa de tom/estilo específico
- Tarefa muito específica (ex: classificar tickets)
- Dados de treinamento são estáveis
- Latência crítica (fine-tuned é mais rápido)
🔍 RAG
Use quando:
- Conhecimento muda frequentemente
- Precisa de citações/fontes
- Base de conhecimento muito grande
- Não quer treinar modelo (caro)
4 RLHF — alinhamento com humanos
Como fazer o modelo seguir instruções e evitar respostas tóxicas.
As 3 etapas do RLHF
- Coleta de dados: humanos comparam pares de respostas (A vs B) e escolhem a melhor
- Treino do reward model: um modelo aprende a prever quais respostas humanos preferem
- Refinamento com PPO: o LLM é ajustado para maximizar a recompensa do reward model
Exemplo: comparando respostas
# Humano compara duas respostas Pergunta: "Como aumentar o timeout?" Resposta A: "Edite config.yaml e adicione NIMBUS_TIMEOUT: 120." Resposta B: "Você pode tentar reiniciar o servidor ou verificar se há problemas de rede." # Humano escolhe: A é melhor (mais específica e útil) # Reward model aprende: respostas específicas > respostas vagas # Após RLHF, o modelo gera mais respostas do tipo A
Por que RLHF é importante?
Segue instruções
Modelo aprende a fazer o que o usuário pede, não só completar texto.
Mais seguro
Evita respostas tóxicas, prejudiciais ou antiéticas.
Mais útil
Respostas mais relevantes, completas e bem formatadas.
5 Temperature e Sampling — controlando a geração
Como ajustar a "criatividade" do modelo.
🎮 Simulador: Temperature
Ajuste a temperature e veja como a distribuição de probabilidade muda
Interpretação: temperature baixa (0.1) = distribuição "afiada", quase determinística. Temperature alta (1.5) = distribuição "achatada", mais aleatória.
A fórmula
# Temperature scaling probs_adjusted = softmax(logits / temperature) # Onde: # logits = scores brutos do modelo (antes de softmax) # temperature = hiperparâmetro (0.1 a 2.0) # Exemplo: logits = [5.0, 3.0, 1.0] # scores brutos # Temperature = 0.1 (baixa) probs_low = [0.88, 0.11, 0.01] # quase determinístico # Temperature = 1.0 (normal) probs_normal = [0.76, 0.20, 0.04] # Temperature = 2.0 (alta) probs_high = [0.55, 0.30, 0.15] # mais aleatório
Outros parâmetros de sampling
| Parâmetro | O que faz | Valores típicos |
|---|---|---|
| Temperature | Controla aleatoriedade da distribuição | 0.1 (determinístico) a 1.5 (criativo) |
| Top-p (nucleus) | Considera só tokens que somam p% da probabilidade | 0.9 (considera top 90%) |
| Top-k | Considera só os k tokens mais prováveis | 50 (top 50 tokens) |
| Repetition penalty | Penaliza tokens já gerados (evita repetição) | 1.1 a 1.3 |
Quando usar cada temperature?
Temperature baixa (0.1-0.3)
Use para: código, extração de dados, respostas factuais, classificação.
Quando precisão > criatividade.
Temperature média (0.5-0.8)
Use para: chatbots, Q&A, resumos, tradução.
Balanço entre coerência e variedade.
Temperature alta (1.0-1.5)
Use para: brainstorming, escrita criativa, geração de ideias.
Quando criatividade > precisão.
6 Context Window — o limite de memória
Quantos tokens o modelo pode processar de uma vez — e por que isso importa.
🎮 Simulador: Context Window
Veja como o contexto é distribuído no window
Espaço restante: 0 tok
Interpretação: o context window é dividido entre system prompt, contexto (chunks recuperados), pergunta do usuário e reserva para output. Se os chunks não cabem, você precisa recuperar menos ou usar chunks menores.
Context windows de modelos populares
| Modelo | Context Window | Equivalente em páginas |
|---|---|---|
| GPT-3.5 | 4096 tokens | ~3 páginas |
| GPT-4 | 8192 tokens | ~6 páginas |
| GPT-4 Turbo | 128.000 tokens | ~100 páginas |
| Claude 3 | 200.000 tokens | ~150 páginas |
| Llama 3 | 8192 tokens | ~6 páginas |
| Mistral | 32.000 tokens | ~25 páginas |
Implicações para RAG
Tamanho dos chunks
Chunks muito grandes não cabem; chunks muito pequenos perdem contexto. Sweet spot: 300-800 tokens.
Top-K
Quantos chunks recuperar? Depende do context window. Com 8K tokens, cabem ~10 chunks de 500 tokens.
Custo
LLMs cobram por token. Mais contexto = mais caro. Otimize o tamanho dos chunks e top-K.
7 Modelos populares em 2026
GPT, Claude, Llama, Mistral — qual escolher para seu caso de uso?
Comparador de modelos
Como escolher?
| Caso de uso | Modelo recomendado | Por quê? |
|---|---|---|
| Chatbot corporativo | Claude 3 Sonnet / GPT-4 | Balanceamento qualidade/custo, bom em seguir instruções |
| RAG local (privacidade) | Llama 3 8B / Mistral 7B | Roda em GPU local, open-source, sem envio de dados |
| Geração de código | GPT-4 / Claude 3 Opus | Melhor em raciocínio complexo e código |
| Alto volume, baixo custo | GPT-3.5 / Llama 3 8B | Rápido e barato, bom para tarefas simples |
| Documentos longos | Claude 3 (200K) / GPT-4 Turbo (128K) | Context window enorme, processa livros inteiros |
Modelos locais com Ollama
# Instala Ollama (https://ollama.com) # Baixa e roda modelos localmente # Lista modelos disponíveis ollama list # Baixa Llama 3 8B ollama pull llama3.1:8b # Roda interativamente ollama run llama3.1:8b # Usa via API curl http://localhost:11434/api/generate -d '{ "model": "llama3.1:8b", "prompt": "Qual o timeout do endpoint /v2/sync?" }' # Modelos recomendados para RAG local: # - llama3.1:8b (8B parâmetros, 8K context) # - mistral:7b (7B parâmetros, 32K context) # - qwen2.5:7b (7B parâmetros, bom em português)
8 Conexão com RAG
Como LLMs se integram ao pipeline RAG.
O pipeline RAG com LLMs
# Pipeline completo # 1. Usuário faz pergunta question = "Qual o timeout do endpoint /v2/sync?" # 2. Busca chunks relevantes (vetorial + BM25) chunks = vector_db.search(question, top_k=5) # 3. Monta prompt prompt = f"""SYSTEM: Responda apenas com base no contexto. CONTEXTO: {format_context(chunks)} PERGUNTA: {question} RESPOSTA:""" # 4. Chama LLM import ollama response = ollama.generate( model="llama3.1:8b", prompt=prompt, options={ "temperature": 0.1, # baixa para precisão "top_p": 0.9, "num_ctx": 8192 # context window } ) # 5. Retorna resposta answer = response["response"] print(answer) # "O timeout padrão do endpoint /v2/sync é 30 segundos..."
Escolhas críticas no RAG
| Escolha | Recomendação | Por quê? |
|---|---|---|
| Modelo | Llama 3 8B (local) ou Claude 3 Sonnet (API) | Balanceamento qualidade/custo/privacidade |
| Temperature | 0.1 a 0.3 | Respostas factuais, não criativas |
| Context window | 8192 tokens mínimo | Caber system prompt + chunks + pergunta |
| Top-K | 5-10 chunks | Suficiente para contexto, sem estourar window |
| Tamanho dos chunks | 300-500 tokens | Equilíbrio entre precisão e contexto |
Otimização de custos
Semantic cache
Cache de respostas semanticamente similares. Evita chamar LLM para perguntas repetidas.
Chunks menores
Reranking
Recupera top-20, rerankeia, passa top-5 ao LLM. Menos tokens, melhor qualidade.
🎯 Quiz — teste seu conhecimento
Clique em uma alternativa para ver se acertou.
→ O que vem a seguir?
Agora que você entende LLMs, vamos aprender a "conversar" com eles de forma eficaz.
Conceitos que vamos construir aqui
Zero-shot / Few-shot
Dar exemplos ao modelo para guiá-lo.
Chain-of-Thought
Pedir ao modelo para "pensar em voz alta".
System Prompts
Instruções globais que definem o comportamento.
Prompt Injection
Segurança: evitar que usuários manipulem o modelo.